package edu.uis.csc478.spring09.threeoxen.requestprocessing;

import edu.uis.csc478.spring09.threeoxen.persistence.store.InventoryItem;
import edu.uis.csc478.spring09.threeoxen.persistence.pantry.GroceryList;
import edu.uis.csc478.spring09.threeoxen.persistence.pantry.Recipe;
import edu.uis.csc478.spring09.threeoxen.persistence.pantry.RecipeIngredient;
import edu.uis.csc478.spring09.threeoxen.persistence.pantry.GroceryListItem;

import java.util.ArrayList;

/**
 * User: Chris Logan
 * Date: Apr 29, 2009
 * Time: 12:48:45 PM
 */
public interface PantryManagementRequestProcessor extends RequestProcessor {

    public void addPantry(String owningUser, int cubicCapacity) throws RequestProcessingException;
    
    //pantry items tasks
    public void addItemToPantry(String owningUser, String upcCode, int quantity) throws RequestProcessingException;
    public void updateItemInPantry(String owningUser, String upcCode, int quantity) throws RequestProcessingException;
    public void removeItemInPantry(String owningUser, String upcCode) throws RequestProcessingException;
    public InventoryItem getItemInPantry(String owningUser, String upcCode) throws RequestProcessingException;

    //grocery list management tasks
    public void addGroceryListToPantry(String owningUser, String listName) throws RequestProcessingException;
    public GroceryList getGroceryListInPantry(String owningUser, String listName) throws RequestProcessingException;
    public void deleteGroceryListFromPantry(String owningUser, String listName) throws RequestProcessingException;
    public void addItemToGroceryList(String owningUser, String listName, String upcCode, int quantity, double price, String recipeName, boolean manuallyOrdered) throws RequestProcessingException;
    public void updateItemQuantityInGroceryList(String owningUser, String listName, String upcCode, int quantity) throws RequestProcessingException;
    public void removeItemFromGroceryList(String owningUser, String listName, String upcCode) throws RequestProcessingException;
    public Object[] getItemsInGroceryList(String owningUser, String listName) throws RequestProcessingException;
    public GroceryListItem getItemInGroceryList(String owningUser, String listName, String upcCode) throws RequestProcessingException;

    //recipe management tasks
    public void addRecipeToPantry(String owningUser, String recipeName, int prepTime, int servings, int calories, String instructions) throws RequestProcessingException;
    public void updateRecipeInPantry(String owningUser, String recipeName, int prepTime, int servings, int calories, String instructions) throws RequestProcessingException;
    public Recipe getRecipeInPantry(String owningUser, String recipeName) throws RequestProcessingException;
    public void deleteRecipeFromPantry(String owningUser, String recipeName) throws RequestProcessingException;
    public void addIngredientToRecipe(String owningUser, String recipeName, String upcCode, String quantity) throws RequestProcessingException;
    public void updateIngredientInRecipe(String owningUser, String recipeName, String upcCode, String quantity) throws RequestProcessingException;
    public void removeIngredientFromRecipe(String owningUser, String recipeName, String upcCode) throws RequestProcessingException;
    public RecipeIngredient[] getIngredientsInRecipe(String owningUser, String recipeName, String upcCode) throws RequestProcessingException;
}
